package q1.project.modules.system.role.dao;

import java.util.List;
import java.util.Optional;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.jpa.repository.JpaRepository;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.stereotype.Repository;
import q1.project.common.enums.EnableStatusEnum;
import q1.project.modules.system.role.entity.PermissionEntity;

/**
 * 权限数据访问对象
 *
 * @author Q1 Team
 * @version 1.0
 */
@Repository
public interface PermissionDao
    extends JpaRepository<PermissionEntity, String>, JpaSpecificationExecutor<PermissionEntity> {

  /** 根据权限编码查询 */
  Optional<PermissionEntity> findByPermissionCode(String permissionCode);

  /** 根据模块查询权限 */
  List<PermissionEntity> findByModule(String module);

  /** 根据租户ID分页查询权限 */
  Page<PermissionEntity> findByTenantId(String tenantId, Pageable pageable);

  /** 搜索权限 注意：此方法应在 Service 层使用 WhereBuilderNow 实现，支持动态查询 */

  /** 根据状态查询权限 */
  List<PermissionEntity> findByStatus(EnableStatusEnum status);
}
